var express = require('express')//加载express这个模块
var app = express()
var path =require('path')
var port = process.env.PORT || 3000//设置端口：process是全局变量
var mongoose = require('mongoose')
var _ =require('underscore')
var Movie =require('./models/movie')
var bodyParser = require('body-parser')

//mongoose.connect('mongodb://localhost:27017/liugezhou')
mongoose.connect('mongodb://localhost/imooc', {useNewUrlParser:true}, function(err){
　　if(err){
　　　　console.log('Connection Error:' + err)
　　}else{
　　　　console.log('Connection success!') }
})

app.set('views','./views/pages') //设置视图的根目录
app.set('view engine','jade')//设置默认的模板引擎

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.locals.moment = require('moment')
app.use(express.static(path.join(__dirname,'public')))
app.listen(port)//监听端口
console.log('六个周 started on port ' + port)//打印一条日志，控制台查看服务是否能成功启动

//添加路由
//index page
app.get('/index',function(req,res){//浏览器中访问页面是以get方法提交提交的，参数一位匹配规则，参数二为回调方法
    Movie.fetch(function(err,movies){
        if(err){
            console.log(err)
        }
        res.render('index',{
            title:'六个周 首页',
            movies:movies
            // movies:[{
            //     title:'Node.js指南',
            //     _id:1,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:2,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:3,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:4,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:5,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:6,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:7,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:8,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:9,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },{
            //     title:'Node.js指南',
            //     _id:10,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg'
            // },]
        })
    })
})
//detail page
app.get('/movie/:id',function(req,res){
    var id =req.params.id
    Movie.findById(id,function(err,movie){
        if(err){
            console.log(err)
        }
        res.render('detail',{
            title:'六个周' + movie.title,
            movie: movie
            // movie:{
            //     doctor:'六个周',
            //     counter:'China',
            //     title:'人生缘编程',
            //     year:2019,
            //     poster:'http://img4.imgtn.bdimg.com/it/u=1178625225,3686148785&fm=26&gp=0.jpg',
            //     language:'汉语',
            //     flash:'https://www.六个周.com/video/1226',
            //     summary:'1.，生命太短暂，不要去做一些根本没有人想要的东西。——Ash Maurya。2，如果你交给某人一个程序，你将折磨他一整天；如果你教某人如何编写程序，你将折磨他一辈子。——David Leinweber。3，软件设计有两种方式：一种方式是，使软件过于简单，明显没有缺陷；另一种方式是，使软件过于复杂，没有明显的缺陷。——C.A.R. Hoare。4，软件开发往往是这样：最开始的 90% 代码占用了开始的 90% 的开发时间；剩下 10% 代码同样需要 90% 的开发时间。——Tom Cargill'
            // }
         })
    })
    
})
//admin page
app.get('/admin/movie',function(req,res){
    res.render('admin',{
        title:'六个周 后台录入页',
        movie:{
            title:'',
            doctor:'',
            country:'',
            year:'',
            poster:'',
            flash:'',
            summary:'',
            language:''
        }
    })
})

// admin post movie
app.post('/admin/movie/new',function(req,res){
    var id =req.body.movie._id
    var movieObj =req.body.movie
    var _movie =null
    console.log(id !=='undefined')
    if(id !=='undefined'){
        Movie.findById(id,function(err,movie){
            if(err){
                console.log(err)
            }

            _movie =_.extend(movie,movieObj)
            _movie.save(function(err,movie){
                if(err){
                    console.log(err)
                }

                res.redirect('/movie/'+movie._id)
            })
        })
    }else{
        _movie = new Movie({
            doctor:movieObj.doctor,
            title:movieObj.title,
            country:movieObj.country,
            language:movieObj.language,
            year:movieObj.year,
            poster:movieObj.poster,
            summary:movieObj.summary,
            flash:movieObj.flash
        })
        _movie.save(function(err,movie){
            if (err) {
                console.log(err)
            }

            res.redirect('/movie/'+movie._id)
        })
    }
})
//list page
app.get('/admin/list',function(req,res){
    Movie.fetch(function(err,movies){
        if(err){
            console.log(err)
        }
        res.render('list',{
         title:'六个周 列表页',
         movies:movies
        // movies:[
        //     {
        //         title:'Node.js指南',
        //         _id:1,
        //         doctor:'六个周',
        //         country:'China',
        //         year:2019,
        //         language:'汉语',
        //         flash:'https://www.jianshu.com/u/5842abb77bd1',
        //         summary:'1.，生命太短暂，不要去做一些根本没有人想要的东西。——Ash Maurya。2，如果你交给某人一个程序，你将折磨他一整天；如果你教某人如何编写程序，你将折磨他一辈子。——David Leinweber。3，软件设计有两种方式：一种方式是，使软件过于简单，明显没有缺陷；另一种方式是，使软件过于复杂，没有明显的缺陷。——C.A.R. Hoare。4，软件开发往往是这样：最开始的 90% 代码占用了开始的 90% 的开发时间；剩下 10% 代码同样需要 90% 的开发时间。——Tom Cargill'
        //     }
        // ]
    })
    })
})

//admin update
app.get('/admin/update/:id',function(req,res){
    var id =req.params.id
    if(id){
        Movie.findById(id,function(err,movie){
            res.render('admin',{
                title:'六个周 后台更新页',
                movie: movie
            })
        })
    }
})
//list delete movie
app.delete('/admin/list',function(req,res){
    var id= req.query.id
    if(id){
        Movie.remove({_id: id},function(err,movie){
            if(err){
                console.log(err)
            }else{
                res.send({success:1})
            }
        })
    }
})
